namespace ext.data
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Represents a tree data structure and bubbles all the events for its nodes. The nodes
	/// in the tree have most standard DOM functionality.
	/// </summary>
	/// <definedin>src\data\Tree.js</definedin>
	[ScriptName("Tree")]
	[ScriptNamespace("Ext.data")]
	[Imported()]
	public partial class Tree : ext.util.Observable
	{
		
		#region Constructors
		public Tree(ext.data.Tree_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		/// <param name="root">The root node</param>
		public Tree(ext.data.Node root)
		{
		}
		
		/// <summary>Constructor</summary>
		public Tree()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>Fires when a new child node is appended to a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("appendEventName")]
		public const string AppendEventName = "append";
		
		/// <summary>Fires when a child node is removed from a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("removeEventName")]
		public const string RemoveEventName = "remove";
		
		/// <summary>Fires when a node is moved to a new location in the tree</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("moveEventName")]
		public const string MoveEventName = "move";
		
		/// <summary>Fires when a new child node is inserted in a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("insertEventName")]
		public const string InsertEventName = "insert";
		
		/// <summary>Fires before a new child is appended to a node in this tree, return false to cancel the append.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeappendEventName")]
		public const string BeforeappendEventName = "beforeappend";
		
		/// <summary>Fires before a child is removed from a node in this tree, return false to cancel the remove.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeremoveEventName")]
		public const string BeforeremoveEventName = "beforeremove";
		
		/// <summary>Fires before a node is moved to a new location in the tree. Return false to cancel the move.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforemoveEventName")]
		public const string BeforemoveEventName = "beforemove";
		
		/// <summary>Fires before a new child is inserted in a node in this tree, return false to cancel the insert.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeinsertEventName")]
		public const string BeforeinsertEventName = "beforeinsert";
		
		/// <summary>The token used to separate paths in node ids (defaults to &apos;/&apos;).</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("pathSeparator")]
		public string PathSeparator;
		#endregion
		
		#region Properties
		/// <summary>The root node for this tree</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("root")]
		[IntrinsicProperty()]
		public ext.data.Node Root
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>Returns the root node for this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("getRootNode")]
		public ext.data.Node GetRootNode()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the root node for this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		/// <param name="node"></param>
		[ScriptName("setRootNode")]
		public ext.data.Node SetRootNode(ext.data.Node node)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Gets a node in this tree by its id.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		/// <param name="id"></param>
		[ScriptName("getNodeById")]
		public ext.data.Node GetNodeById(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when a new child node is appended to a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("append")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node_And_System_Number Append;
		
		/// <summary>Fires when a child node is removed from a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("remove")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node Remove;
		
		/// <summary>Fires when a node is moved to a new location in the tree</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("move")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node_And_ext_data_Node_And_System_Number Move;
		
		/// <summary>Fires when a new child node is inserted in a node in this tree.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("insert")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node_And_ext_data_Node Insert;
		
		/// <summary>Fires before a new child is appended to a node in this tree, return false to cancel the append.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeappend")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node Beforeappend;
		
		/// <summary>Fires before a child is removed from a node in this tree, return false to cancel the remove.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeremove")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node Beforeremove;
		
		/// <summary>Fires before a node is moved to a new location in the tree. Return false to cancel the move.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforemove")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node_And_ext_data_Node_And_System_Number Beforemove;
		
		/// <summary>Fires before a new child is inserted in a node in this tree, return false to cancel the insert.</summary>
		/// <definedin>src\data\Tree.js</definedin>
		[ScriptName("beforeinsert")]
		public event ext.auto.Delegate_ext_data_Tree_And_ext_data_Node_And_ext_data_Node_And_ext_data_Node Beforeinsert;
		#endregion
	}
}
